<?php

class Usuario extends Zend_Db_Table_Row_Abstract
{

        protected $colaboracoes; 
        
        protected $pontuacao;
        
	public function getMercadosPreferidos(){
            return $this->findDependentRowset('DbTable_MercadoPreferido');
	}
        
        /**
         * Retorna a coordenada de uma regiao de preferencia
         * @return Coordenada 
         */             
        public function getRegiaoPreferencia(){
            return $this->findParentRow('DbTable_Coordenada');
        }

        
        public function getColaboracoes(){
            if (is_null($this->colaboracoes))
                $this->colaboracoes = $this->findDependentRowset('DbTable_ColaboracaoProduto');
            
            return $this->colaboracoes;
        }
        
        
        public function getColaboracoesPositivas(){
            $colaboracoes = $this->getColaboracoes();
            
            $colaboracoesPositivas = array();
            
            foreach ($colaboracoes as $colaboracao) {
                if ($colaboracao->vl_pontuacao == Pontuacao::POSITIVA)
                    array_push ($colaboracoesPositivas, $colaboracao);
            }
            
            return $colaboracoesPositivas;
        }
        
        
        public function getColaboracoesNegativas(){
        	ini_set('memory_limit', '2048M');
        	ini_set('max_execution_time', '2000000');
        	
            $colaboracoes = $this->getColaboracoes();
            
            $colaboracoesNegativas = array();
            
            foreach ($colaboracoes as $colaboracao) {
                if ($colaboracao->vl_pontuacao != Pontuacao::POSITIVA)
                    array_push ($colaboracoesNegativas, $colaboracao);
            }
            
            return $colaboracoesNegativas;
        }
        
        
        public function getPercentualColaboracoes(){
            $positivas = count($this->getColaboracoesPositivas());
            $negativas = count($this->getColaboracoesNegativas());
            $total = $positivas + $negativas;

            return ($positivas * 100) / $total;
        }
        
        
        public function getPontuacao(){
            if (is_null($this->pontuacao))
                $this->pontuacao = (count($this->getColaboracoesPositivas()) * 1) - (count($this->getColaboracoesNegativas()));
            
            return $this->pontuacao;
        }
        
        
        /**
         * 
         * @return DbTable_ListaCompra
         */
        public function getListas(){
            return $this->findDependentRowset('DbTable_ListaCompra');
        }
        
        
        public function passIsCorrect($password){
        	return $this->ds_senha == sha1($password);
        }
}
